export default {
  normal(value, min, max) {
    let regStr = '[\\u4e00-\\u9fa5|\\x00-\\xff|\\d|\\w|_|\\$]'

    if (min && max) {
      regStr += '{' + min + ',' + max + '}'
    } else if (max) {
      regStr += '{,' + max + '}'
    } else if (min) {
      regStr += '{' + min + ',}'
    }

    regStr = '^' + regStr + '$'
    const regexp = new RegExp(regStr)

    return regexp.test(value)
  },

  text(value, min, max) {
    let regStr

    if (typeof value !== 'string' && typeof value !== 'number') {
      return false
    }

    regStr = '[\\u4e00-\\u9fa5|\\x00-\\xff|\\d|\\w|_|\\$|\\.|。|,|，|（|）|\\(|\\)]'
    if (min && max) {
      regStr += '{' + min + ',' + max + '}'
    } else if (max) {
      regStr += '{,' + max + '}'
    } else if (min) {
      regStr += '{' + min + ',}'
    }

    regStr = '^' + regStr + '$'
    const regexp = new RegExp(regStr)

    return regexp.test(value)
  },

  telephone(value) {
    let regStr

    regStr = '\\d{3,4}-\\d{7,8}'
    regStr = '^' + regStr + '$'
    const regexp = new RegExp(regStr)

    // console.info('telephone:', regStr, regexp, value, regexp.test(value))

    return regexp.test(value)
  },

  password(value, min, max) {
    let regStr = '.'

    if (min && max) {
      regStr += '{' + min + ',' + max + '}'
    } else if (max) {
      regStr += '{,' + max + '}'
    } else if (min) {
      regStr += '{' + min + ',}'
    }

    regStr = '^' + regStr + '$'
    const regexp = new RegExp(regStr)

    return regexp.test(value)
  },

  validateCode(value, min, max) {
    let regStr = '\\d'

    if (min && max) {
      regStr += '{' + min + ',' + max + '}'
    } else if (max) {
      regStr += '{,' + max + '}'
    } else if (min) {
      regStr += '{' + min + ',}'
    }

    regStr = '^' + regStr + '$'
    const regexp = new RegExp(regStr)

    return regexp.test(value)
  },

  checkNameHasCall(value) {
    let res = true

    if (value.match('先生')) {
      res = false
    } else if (value.match('女士')) {
      res = false
    } else if (value.match('小姐')) {
      res = false
    } else if (value.match('匿名')) {
      res = false
    }

    return res
  },

  checkExistName(value) {
    let res = true

    const regStr = /^[\u2E80-\u9FFF]+$/
    const regexp = new RegExp(regStr)
    if (!this.normal(value, 2, 8) || !regexp.test(value) || !this.checkNameHasCall(value)) {
      res = false
    }
    return res
  },

  phone(rule, value, callback) {
    let regStr

    regStr = '1[3|4|5|6|7|8|9]\\d{9}'

    regStr = '^' + regStr + '$'
    const regexp = new RegExp(regStr)

    // console.info('phone:', regStr, regexp, value, regexp.test(value))

    if (regexp.test(value)) {
      return callback();
    }
    return callback(new Error('请输入规范的手机号码'))

  },

  // 只能输入数字和字母
  validAccount(rule, value, callback) {
    if (/^[A-Za-z|\d]{0,20}$/.test(value)) {
      return callback();
    }
    return callback(new Error('只能输入字母、数字，长度在20个字以内'))
  },

  validPassword(rule, value, callback) {
    if (/[\u4E00-\u9FA5]$/.test(value)) {
      return callback(new Error('密码不能输入汉字'));
    }
    if (value.split('').length < 6 || value.split('').length > 15) {
      return callback(new Error('密码长度在6到15个字符以内'));
    }
    return callback();
  },
  // 只能输入数字和字母
  validateLoginIpt(rule, value, callback) {
    if (/^[A-Za-z|\d]{1,30}$/.test(value)) {
      return callback();
    }
    return callback(new Error('请输入英文和数字'))
  }
}
